﻿using System;
using System.Collections.Generic;
using System.Linq;
using System.Web;
using NUnit.Framework;
using Grupo2.Dominio;
using Grupo2.Persistencia;

namespace Grupo2.Pruebas
{
    [TestFixture]
    public class TestOfertanteDAO
    {
        //private OfertanteDAO ofertanteDAO;

        [Test]
        public void TestCrearOfertante()
        {
            //Creamos un objeto nuevoOfertante del tipo Ofertante
            Ofertante nuevoOfertante = new Ofertante();

            //Asignamos valores a los atributos al objeto nuevoOfertante
            nuevoOfertante.Id_Ofertante  = 1;
            nuevoOfertante.Email = "ofertante12@empresa.com";
            nuevoOfertante.Password = "ABC123546";
            nuevoOfertante.Ruc = "12345678912";
            nuevoOfertante.Razon_Social = "Compania Z";
            nuevoOfertante.Direccion = "Calle Andromeda 1556";
            nuevoOfertante.Giro_Negocio = "Accesorios computo";
            nuevoOfertante.Representante_Legal = "Joseff Blatter";
            nuevoOfertante.Nombre_Contacto = "Aquarius Dammert";
            nuevoOfertante.Telefono_Contacto = "5214589";
            nuevoOfertante.Email_Contacto = "contactoEmpresa2@empresa.com";

            //En el este objeto cargaremos los valores
            OfertanteDAO OfertanteDAO = new OfertanteDAO();

            //Creamos un objeto OfertanteCreado del tipo Ofertante y mediante el método CrearOfertante definido en
            //en la clase OfertanteDAO.cs hacemos luego que OfertanteCreado reciba los datos del objeto OfertanteDAO
            Ofertante OfertanteCreado = OfertanteDAO.CrearOfertante(nuevoOfertante);
            
            //Con esto verificamos que se haya creado el registro en la BD
            Assert.NotNull(OfertanteCreado);
        }
        
        [Test]       
        public void TestObtenerOfertante()
        {
            Int32 Id_ofertante_Buscado = 1;
            
            //Creamos un objeto del tipo ofertanteDAO
            OfertanteDAO ofertanteDAO = new OfertanteDAO();

            //Creamos un objeto ofertanteExistente y le asignamos los datos obtenido con el método ObtenerOfertante
            //que esta definido en la clase OfertanteDAO.cs
            Ofertante ofertanteExistente = ofertanteDAO.ObtenerOfertante(Id_ofertante_Buscado);

            //Con esto verificamos sí hemos el ofertante buscado se ha encontrado
            Assert.AreEqual(Id_ofertante_Buscado, ofertanteExistente.Id_Ofertante);
            
            //Con esto verificamos que el campo Razon_Social no este vacio
            Assert.NotNull(ofertanteExistente.Razon_Social);
        }

        [Test]
        public void ModificarOfertante()
        {
            String email_modificado = "nuevoemail@gmail.com";
            OfertanteDAO ofertanteDAO = new OfertanteDAO();

            Ofertante ofertanteExistente = ofertanteDAO.ObtenerOfertante(1);
            ofertanteExistente.Email = email_modificado;

            Ofertante ofertanteModificado = null;            
            
            Assert.Catch<Exception>(delegate
            {
                ofertanteModificado = ofertanteDAO.CrearOfertante(ofertanteExistente);
            });

        }

        [Test]
        public void TestEliminarOfertante()
        {
            Int32 Id_ofertante_A_Elminar = 1;
           
            OfertanteDAO ofertanteDAO = new OfertanteDAO();

            ofertanteDAO.EliminarOfertante(Id_ofertante_A_Elminar);

            Ofertante existe = ofertanteDAO.ObtenerOfertante(Id_ofertante_A_Elminar);
            
            Assert.IsNull(existe);
        }        
        
    }
}